package com.ys.io.p3缓冲字节流;

import java.io.*;

/**
 * 描述: 缓冲字节流
 *       1:BufferInputStream  缓冲字节输入流 读
 *       2:BufferOutputStream 缓冲字节输出流 写
 *
 *       本身不可直接的写和读,只是一个桥梁装饰流,必须要要注入对应的 输入 输出流对象
 *
 *
 * @author CodeYang
 * @version 2020/12/30 21:32
 */
public class 缓冲字节流 {
    /**
     * 使用缓冲输入流读取磁盘数据并且打印
     *  * 步骤：1 定义try with resources
     *  *      2 创建FileInputStream对象，指定磁盘文件的路径
     *  *      3 创建BufferedInputStream对象，将FileInputStream注入到它里面
     *  *      4 定义byte数组存储读取的数据
     *  *      5 定义整形变量存储读取的有效字节数
     *  *      6 定义StringBuilder存储读取的所有数据
     *  *      7 使用BufferedInputStream的read(byte[])方法读取数据，读取到-1结束
     *  *      8 将读取的数据转换为String
     *  *      9 将String追加到StringBuilder中
     *  *      10 打印StringBuilder读取的结果
     * @param args
     */
    public static void main(String[] args) {
        try (
                InputStream is = new FileInputStream("day_23/拷贝图片.jpg");
                BufferedInputStream bis = new BufferedInputStream(is);
                OutputStream os = new FileOutputStream("day_23/拷贝图片110.jpg");
                BufferedOutputStream bos = new BufferedOutputStream(os);
                ){
            byte[] data = new byte[1024];
            int len =0;
            while ((len=bis.read(data))!=-1){
                bos.write(data,0,len);
            }
            bos.flush();
            System.out.println("拷贝成功");
        }catch (Exception e){
            System.out.println("拷贝失败");
            e.printStackTrace();
        }
    }
}
